package com.wande.dataplatform.service;

import com.wande.dataplatform.domain.Job;

/**
 * DolphinScheduler集成服务接口
 *
 * @author wande
 */
public interface IDolphinSchedulerService {

    /**
     * 创建工作流
     *
     * @param job 作业对象
     * @return 工作流ID
     */
    Long createWorkflow(Job job);

    /**
     * 更新工作流
     *
     * @param job 作业对象
     */
    void updateWorkflow(Job job);

    /**
     * 删除工作流
     *
     * @param workflowId 工作流ID
     */
    void deleteWorkflow(Long workflowId);

    /**
     * 启动工作流
     *
     * @param workflowId 工作流ID
     * @return 实例ID
     */
    Long startWorkflow(Long workflowId);

    /**
     * 停止工作流实例
     *
     * @param instanceId 实例ID
     */
    void stopWorkflow(Long instanceId);

    /**
     * 获取工作流实例状态
     *
     * @param instanceId 实例ID
     * @return 状态
     */
    String getWorkflowInstanceStatus(Long instanceId);

    /**
     * 获取工作流实例日志
     *
     * @param instanceId 实例ID
     * @return 日志内容
     */
    String getWorkflowInstanceLogs(Long instanceId);

    /**
     * 同步实例状态
     *
     * @param instanceId DolphinScheduler实例ID
     */
    void syncInstanceStatus(Long instanceId);

    /**
     * 获取子任务实例列表
     *
     * @param instanceId DolphinScheduler实例ID
     * @return 子任务实例列表
     */
    java.util.List<com.wande.dataplatform.domain.vo.JobInstanceVO> getSubTaskInstances(Long instanceId);

    /**
     * 获取实例日志
     *
     * @param instanceId DolphinScheduler实例ID
     * @return 日志内容
     */
    String getInstanceLogs(Long instanceId);
}
